#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>

//#define ONE 0x1 
//#define TWO 0x2
//#define THREE 0x4
//#define FOUR 0x8
//void test(int flag)
//{
//    if(flag & ONE)
//        printf("print ONE!\n");
//    if(flag & TWO)
//        printf("print TWO!\n");
//    if(flag & THREE)
//        printf("print THREE!\n");
//    if(flag & FOUR)
//        printf("print FOUR!\n");
//}
//int main()
//{
//    test(ONE);
//    printf("------------------------\n");
//    test(ONE|TWO);
//    printf("------------------------\n");
//    test(ONE|THREE);
//    printf("------------------------\n");
//    test(ONE|TWO|THREE);
//    printf("------------------------\n");
//    test(ONE|TWO|THREE|FOUR);
//    printf("------------------------\n");
//    return 0;
//}

//int main(int argc,char* argv[])
int main()
{

    printf("%d\n",stdin->_fileno);
    printf("%d\n",stdout->_fileno);
    printf("%d\n",stderr->_fileno);
    //int a=0;
    //fscanf(stdin,"%d",&a);
    //printf("%d\n",a);
    //char line[100];
    //ssize_t s=read(0,line,sizeof(line));
    //if(s>0)//读取成功
    //{
    //    line[s]='\0';
    //}
    //printf("%s\n",line);
    //const char* s1="hello fprintf!\n";
    //const char* s2="hello write!\n";
    //fprintf(stdout,"%s",s1);
    //write(1,s2,strlen(s2));

    //umask(0);
    //int fd1=open("log1.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);
    //int fd2=open("log2.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);
    //int fd3=open("log3.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);
    //int fd4=open("log4.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);
    //
    //printf("%d\n",fd1);
    //printf("%d\n",fd2);
    //printf("%d\n",fd3);
    //printf("%d\n",fd4);

    //close(fd1);
    //close(fd2);
    //close(fd3);
    //close(fd4);














    //int fd = open("log.txt",O_RDONLY);//只读方式，不需要设定mode参数
    //int fd = open("log.txt",O_WRONLY);//只写方式，文件存在，不需要设定mode参数
    //int fd = open("log.txt",O_WRONLY|O_TRUNC);//只写方式，文件存在，并且清空原有内容
    //int fd = open("log.txt",O_WRONLY|O_TRUNC|O_CREAT);//只写方式，文件不存在，创建文件后在操作
    //int fd = open("log.txt",O_WRONLY|O_APPEND|O_CREAT);//追加方式，文件不存在，创建文件后在操作
   // umask(0);//文件掩码设置为0
   // int fd = open("log.txt",O_WRONLY|O_TRUNC|O_CREAT,0664);//只写方式，文件不存在，指定权限创建文件后在操作
   // if(fd<0)
   // {
   //     perror("open");
   //     return 1;
   // }
   // const char* s= "i like linux!\n";
   // write(fd,s,strlen(s));
   // close(fd);
   // int fd1 = open("log.txt",O_RDONLY);//只读方式，不需要设定mode参数
   // 

   // char buff[100];
   // memset(buff,'\0',sizeof(buff));
   // read(fd,buff,sizeof(buff));
   // fprintf(stdout,"%s",buff);
   // close(fd1);






















    //if(argc!=2)
    //{
    //    printf("输入错误！\n");
    //    return 2;
    //}
    //FILE* fd=fopen(argv[1],"r");//默认当前路径
    //if(fd== NULL)
    //{
    //    perror("fopen");
    //    return 1;
    //
    //}
    //char line[64];
    //while(fgets(line,sizeof(64),fd))
    //{
    //    fprintf(stdout,"%s",line);
    //}
    //fclose(fd);
    //fputs("linux so easy!\n",fd1);
    //fclose(fd1);
    //FILE* fd2=fopen("log.txt","r");
    //char line[64];
    //fgets(line,sizeof(line),fd2);
    //fprintf(stdout,"%s",line);
    //fclose(fd2);
   
    // FILE* fd=fopen("code/Linux/log.txt","w");//指定路径
   // const char* s="hi fwrite!\n";
   // const char* s="hello fwrite!\n";
   // const char* s1="hello fputs!\n";
   // const char* s2="hello fprintf!\n";
    
    //fwrite(s,strlen(s),1,fd);
    //fputs(s1,fd);
    //fprintf(fd,"%s",s2);
    
    //fputs(s,fd);
    //char line[64];
    //while(fgets(line,sizeof(line),fd))
    //{
    //    fprintf(stdout,"%s",line);
    //}
    //fclose(fd);
    
    return 0;
}

